package com.zudada.servermain.POJO.DTO;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.JsonNode;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import io.swagger.annotations.ApiModelProperty;

import javax.validation.constraints.NotBlank;
import java.util.Date;

@Data
public class VesselBerthingAddDTO {
    @ApiModelProperty("靠泊记录ID")
    @NotBlank(message = "停靠记录唯一标识不能为空")
    private String berthId;
    @ApiModelProperty("港口ID")
    @NotBlank(message = "港口id不能为空")
    private String portId;
    @ApiModelProperty("船舶ID(IMO号或船名)")
    @NotBlank(message = "船舶标识(IMO 号或船名)不能为空")
    private String vesselId;
    @ApiModelProperty("船舶名称")
    @NotBlank(message = "船舶名称不能为空")
    private String vesselName;
    @ApiModelProperty("船舶类型")
    @NotBlank(message = "船舶类型不能为空")
    private String vesselType;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") // Jackson 反序列化格式（时区重要，避免时差）
    @ApiModelProperty("靠泊时间")
    @NotBlank(message = "靠泊时间不能为空")
    private Date berthTime;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") // Jackson 反序列化格式（时区重要，避免时差）
    @ApiModelProperty("离港时间")
    private Date departureTime;
    @ApiModelProperty("货物信息(JSON)")
    @NotBlank(message = "货物信息(类型、数量、装卸需求等)不能为空")
    private JsonNode cargoInfo; // 前端传JSON字符串，后续可转JsonNode
    @ApiModelProperty("运营方（部门或合作企业）")
    @NotBlank(message = "运营方，门部门或合作企业不能为空")
    private String operator;
    @ApiModelProperty("流程状态(在泊/已旁泊/计划靠泊)")
    @NotBlank(message = "流程状态(在泊 已旁泊 计划靠泊) 不能为空")
    private String status;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") // Jackson 反序列化格式（时区重要，避免时差）
    @ApiModelProperty("预计到达时间")
    private Date etaTime;
    @ApiModelProperty("港口拥堵情况")
    private String portCongestion;
    @ApiModelProperty("靠泊位置")
    private String berthPosition;
    @ApiModelProperty("预计船舶数量")
    private Integer estimatedVesselCount;
}
